/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package session;

import entities.Acheteur;
import entities.Magasin;

import entities.Vendeur;
import java.io.*;
import java.util.ArrayList;
import java.util.Collection;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Lionel Prado
 */
@Stateless
@LocalBean
public class GestionnaireUtilisateur {

    @PersistenceContext(unitName = "webServiceProjectBoosGiroud2013-ejbPU")
    private EntityManager em;

    public Magasin attribuerMagasinVendeur(String name, double longitude, double lattitude, Vendeur vendeur) {
        Magasin m = new Magasin(name, longitude, lattitude, vendeur);
        em.persist(m);
        return m;
    }
//SUPPRIMER UN MAGASIN

    public Collection<Acheteur> getAllAcheteur() {
        Query query = em.createNamedQuery("Acheteur.findAll");
        return query.getResultList();
    }

    public Collection<Vendeur> getAllVendeur() {
        Query query = em.createNamedQuery("Vendeur.findAll");
        return query.getResultList();
    }

    public Vendeur getVendeur(Long idUser) {
        return em.find(Vendeur.class, idUser);
    }
     public Acheteur getAcheteur(Long idUser) {
        return em.find(Acheteur.class, idUser);
    }

    public Collection<Magasin> creerJeuxMagasin(Vendeur v) {


        Collection<Magasin> liste = new ArrayList<Magasin>();

        for (int i = 0; i < 4; i++) {
            int lowerLongitude = 0;
            int higherLongitude = 48169;
            int lowerLatitude = 69469;
            int higherLatitude = 99999;

            double randomLongitude = (int) (Math.random() * (higherLongitude - lowerLongitude)) + lowerLongitude;
            double randomLatitude = (int) (Math.random() * (higherLatitude - lowerLatitude)) + lowerLatitude;

            double longt = 7.000000 + randomLongitude / 100000;
            double lat = 43.000000 + randomLatitude / 100000;

            liste.add(attribuerMagasinVendeur("Mag" + i + v.getLogin(), longt, lat, v));
        }
        return liste;

    }

    public Collection<Magasin> recupererListeMagasin(Vendeur v) {
        if (v == null) {
            new Exception("vendeur null");
        }
        Query query = em.createNamedQuery("Magasin.findMagasinPourUnUser");
        query.setParameter("idVendeur", v.getId());
        return query.getResultList();

    }
    
    public Acheteur creerAcheteur(String login, String password, String name, String firstName, String adress, double latitude, double longitude) {   
        Acheteur a = new Acheteur(login, password, name, firstName, adress, latitude, longitude);
        em.persist(a);
        return a;
    }
    
    public Vendeur creerVendeur(String login, String password, String name, String firstName, String adress) {   
        Vendeur v = new Vendeur(login, password, name, firstName, adress);
        em.persist(v);
        return v;
    }
    
    

    public Collection<Acheteur> creerAcheteursTest() {

        Collection<Acheteur> liste = new ArrayList();
        //creation de 4 users et d'un compte pour chacun
        // pour nos test :
        Acheteur a = new Acheteur("a", "a", "a", "a", "06560", 43.61666, 7.06371);

        em.persist(a);
        liste.add(a);
        
        
        //mien : C:\\Users\\Ace_ventura\\Documents\\Miage\\_M2\\_WEB\\trunk\\webServiceProjectBoosGiroud2013-ejb\\src\\java\\session\\Heroes.txt
        //tien : C:\\Users\\Lionel Prado\\Desktop\\matieresNTDP\\WebServices2013\\webServiceProjectBoosGiroud2013\\webServiceProjectBoosGiroud2013-ejb\\src\\java\\session\\Heroes.txt
        String fichier = "C:\\Users\\Ace_ventura\\Documents\\Miage\\_M2\\_WEB\\trunk\\webServiceProjectBoosGiroud2013-ejb\\src\\java\\session\\Heroes.txt";
        System.out.println("JEUX DE DONNEES");
        //lecture du fichier texte	
        try {
            InputStream ips = new FileInputStream(fichier);
            InputStreamReader ipsr = new InputStreamReader(ips);
            BufferedReader br = new BufferedReader(ipsr);
            String ligne = "";
            String ligne2 = "";
            while ((ligne = br.readLine()) != null) {
                System.out.println("NOM " + ligne);
                ligne2 = br.readLine();
                System.out.println("PRENOM " + ligne2);
                Acheteur aEnCours = new Acheteur(ligne + "06", "pass", ligne, ligne2, "1645 Route des Lucioles, 06410 Biot", 43.61666, 7.06371);

                em.persist(aEnCours);
                liste.add(aEnCours);
            }
            br.close();
        } catch (Exception e) {
            System.out.println(e.toString());
        }

        return liste;
    }

    public Collection<Vendeur> creerVendeursTest() {

        Collection<Vendeur> liste = new ArrayList();

        Vendeur v = new Vendeur("v", "v", "v", "v", "06560");
        em.persist(v);
        liste.add(v);

        //MET TON CHEMIN ICI la flemme de recup avec les focntion java
        //mien : C:\\Users\\Ace_ventura\\Documents\\Miage\\_M2\\_WEB\\trunk\\webServiceProjectBoosGiroud2013-ejb\\src\\java\\session\\Heroes.txt
       
              String fichier = "C:\\Users\\Ace_ventura\\Documents\\Miage\\_M2\\_WEB\\trunk\\webServiceProjectBoosGiroud2013-ejb\\src\\java\\session\\Heroes.txt";
              System.out.println("JEUX DE DONNEES");
        //lecture du fichier texte	
        
        
        int i =2;//15
        try {
            InputStream ips = new FileInputStream(fichier);
            InputStreamReader ipsr = new InputStreamReader(ips);
            BufferedReader br = new BufferedReader(ipsr);
            String ligne = "";
            String ligne2 = "";
            while ((ligne = br.readLine()) != null) {
                if(i==0)break;
                System.out.println("NOM " + ligne);
                ligne2 = br.readLine();
                System.out.println("PRENOM " + ligne2);
                Vendeur vEnCours = new Vendeur(ligne2 + "06", "admin", ligne2, ligne, "1645 Route des Lucioles, 06410 Biot");

                em.persist(vEnCours);
                liste.add(vEnCours);
                i--;
            }
            br.close();
        } catch (Exception e) {
            System.out.println(e.toString());
        }

        return liste;
    }
// Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method")

    public Vendeur update(Vendeur u) {
        System.out.println("cette fois on est ds gestionnaire...");
        return em.merge(u);
    }

    public void delete(Vendeur utilisateur) {
        em.remove(em.find(Vendeur.class, utilisateur.getId()));
    }

    public Acheteur update(Acheteur u) {
        System.out.println("cette fois on est ds gestionnaire...");
        return em.merge(u);
    }

    public void delete(Acheteur utilisateur) {
        em.remove(em.find(Vendeur.class, utilisateur.getId()));
    }

    public void persist(Object object) {
        em.persist(object);
    }

    public void persist(Vendeur object) {
        em.persist(object);
    }

    public void persist(Acheteur object) {
        em.persist(object);
    }

    public void persist(Magasin object) {
        em.persist(object);
    }
}
